ACID Compliance in DynamoDB

Database Tutorials - ডাইনামোডিবি (DynamoDB) Transactions in DynamoDB |
218
218

ACID (Atomicity, Consistency, Isolation, Durability) হল ডেটাবেস সিস্টেমের মৌলিক বৈশিষ্ট্যসমূহ, যা নিশ্চিত করে যে ডেটাবেস ট্রানজ্যাকশনগুলি সঠিকভাবে এবং নিরাপদভাবে সম্পন্ন হয়। AWS DynamoDB ACID বৈশিষ্ট্যগুলি নির্দিষ্ট পরিমাণে সমর্থন করে, যা ট্রানজ্যাকশনাল সিস্টেমের জন্য গুরুত্বপূর্ণ।

DynamoDB একটি NoSQL ডেটাবেস হলেও, এটি ACID compliance এর একটি নির্দিষ্ট স্তর প্রদান করে, বিশেষ করে ট্রানজেকশনাল অপারেশনের জন্য। এই অপারেশনগুলি আপনাকে একাধিক ডেটা পয়েন্ট নিয়ে একটি সম্পূর্ণ পারস্পরিক সম্পর্কিত কাজ পরিচালনা করতে দেয়, যেখানে ট্রানজেকশনটি সফলভাবে সম্পন্ন না হলে কোনও পরিবর্তন ঘটবে না।


ACID বৈশিষ্ট্যগুলি DynamoDB তে কীভাবে কাজ করে?

  1. Atomicity (আটমিকিটি):

    • Atomicity নিশ্চিত করে যে একটি ট্রানজেকশন সফলভাবে সম্পন্ন হলে সমস্ত অপারেশন হবে, অন্যথায়, কোনও অপারেশনই বাস্তবায়িত হবে না। যদি একাধিক অপারেশন থাকে (যেমন, একাধিক আইটেম ইনসার্ট, আপডেট বা ডিলিট করা), তবে যদি কোনো একটি অপারেশন ব্যর্থ হয়, তবে পুরো ট্রানজেকশন ব্যর্থ হয়ে যাবে এবং সব পরিবর্তন রোলব্যাক হবে।

    DynamoDB তে Transactional Writes এই সুবিধা প্রদান করে। আপনি একাধিক রেকর্ডের মধ্যে পারস্পরিক নির্ভরশীলতা বজায় রেখে ইনসার্ট, আপডেট বা ডিলিট করতে পারেন, এবং যদি কোন একটি অপারেশন ব্যর্থ হয়, তবে সমস্ত পরিবর্তন রোলব্যাক হবে।

    উদাহরণ:

    • একটি অ্যাকাউন্ট ডেবিট এবং ক্রেডিট করার সময়ে যদি এক অপারেশন ব্যর্থ হয়, তবে অন্যটি কার্যকর হবে না।
  2. Consistency (সঙ্গতি):

    • Consistency নিশ্চিত করে যে ডেটাবেসের সমস্ত পরিবর্তন নির্দিষ্ট নিয়মে এবং সঠিকভাবে হয়, এবং যেকোনো সময় ডেটাবেস সঠিক এবং সঙ্গতিপূর্ণ অবস্থায় থাকে।

    DynamoDB নিশ্চিত করে যে একটি ট্রানজেকশন শুরু হওয়ার পর ডেটাবেসের মান Consistency অনুযায়ী থাকবে, এমনকি একাধিক রেকর্ড পরিবর্তন বা প্রক্রিয়া করা হলে। তবে, Eventual Consistency প্রাথমিকভাবে DynamoDB তে ব্যবহৃত হলেও, ট্রানজেকশনাল API গুলি ব্যবহার করে আপনি Strong Consistency নিশ্চিত করতে পারেন।

  3. Isolation (আয়সোলেশন):

    • Isolation নিশ্চিত করে যে একাধিক ট্রানজেকশন একসাথে চলতে থাকলে একে অপরের উপর প্রভাব ফেলবে না। অর্থাৎ, একটি ট্রানজেকশন চলাকালে অন্য কোনো ট্রানজেকশন তার ডেটা পরিবর্তন করতে পারবে না, যতক্ষণ না প্রথম ট্রানজেকশন সম্পন্ন হবে।

    DynamoDB তে Isolation সাধিত হয় ট্রানজেকশন চালানোর সময়। যদি একাধিক ট্রানজেকশন একসাথে চলে, তবে তাদের মধ্যে কোনও পারস্পরিক প্রভাব পরবে না এবং তারা সম্পূর্ণ আলাদাভাবে সম্পন্ন হবে।

  4. Durability (স্থায়িত্ব):

    • Durability নিশ্চিত করে যে, একটি ট্রানজেকশন সম্পন্ন হওয়ার পর ডেটাবেসে তার পরিবর্তন স্থায়ী হয়ে থাকবে। ডেটা কোনভাবেই হারাবে না এবং যে পরিবর্তন করা হয়েছে তা মেমরি থেকে ডিস্কে স্থায়ীভাবে সংরক্ষিত থাকবে।

    DynamoDB এর মধ্যে Durability সুনিশ্চিত করা হয়, কারণ এটি Multiple Availability Zones এ ডেটা রেপ্লিকেট করে। যখন আপনি ট্রানজেকশন সম্পন্ন করেন, তখন নিশ্চিত হয় যে ডেটা স্থায়ীভাবে সঞ্চিত হয়েছে এবং তা যদি সার্ভার বা সিস্টেম ক্র্যাশ হয়, তাও তা নিরাপদ থাকবে।


DynamoDB তে ACID Transactions ব্যবহার করা

DynamoDB তে ACID-compliant transactions চালানোর জন্য, AWS একটি ট্রানজেকশনাল API প্রদান করেছে যা TransactWriteItems এবং TransactGetItems নামক দুটি প্রধান অপারেশন ধারণ করে।

TransactWriteItems:

এই অপারেশনটি একাধিক Write অপারেশনকে একসাথে একত্রিত করতে এবং একটি একক ACID ট্রানজেকশনে পরিচালনা করতে সক্ষম। এই অপারেশনটি ইনসার্ট, আপডেট, এবং ডিলিট অপারেশনগুলিকে একত্রে সম্পন্ন করে।

উদাহরণ (Python SDK):

import boto3
from botocore.exceptions import ClientError

# DynamoDB ক্লায়েন্ট তৈরি করা
dynamodb = boto3.client('dynamodb')

# ট্রানজেকশনাল লেখার জন্য আইটেম
try:
    response = dynamodb.transact_write_items(
        TransactItems=[
            {
                'Put': {
                    'TableName': 'Users',
                    'Item': {
                        'UserID': {'S': '12345'},
                        'Name': {'S': 'John Doe'},
                        'Age': {'N': '30'}
                    }
                }
            },
            {
                'Update': {
                    'TableName': 'Accounts',
                    'Key': {
                        'AccountID': {'S': 'A123'}
                    },
                    'UpdateExpression': 'SET Balance = Balance - :amount',
                    'ExpressionAttributeValues': {
                        ':amount': {'N': '100'}
                    }
                }
            }
        ]
    )
    print("Transaction successful!")
except ClientError as e:
    print(f"Error: {e}")

TransactGetItems:

এই অপারেশনটি একাধিক Get অপারেশনকে একত্রিত করে এবং ডেটা একসাথে রিটার্ন করে, যা একটি ACID ট্রানজেকশন হিসেবে কাজ করে।


সারাংশ

  • DynamoDB সম্পূর্ণ ACID-compliant নয়, তবে এটি Transactional Writes এবং Transactional Reads এর মাধ্যমে ACID গুণাবলী প্রদান করে, যা উচ্চ পরিমাণের ডেটা ট্রানজেকশন এবং একাধিক ডেটা রেকর্ডের উপর পারস্পরিক নির্ভরশীলতা বজায় রাখে।
  • TransactWriteItems এবং TransactGetItems অপারেশনগুলো ACID গুণাবলী নিশ্চিত করে এবং আপনার অ্যাপ্লিকেশনে ডেটার সঙ্গতি, আয়সোলেশন এবং স্থায়িত্ব নিশ্চিত করে।
  • Consistency এর জন্য DynamoDB ইভেন্টুয়াল কনসিস্টেন্সি ব্যবহার করে তবে Strong Consistency প্রয়োজন হলে এটি ট্রানজেকশনাল API দিয়ে সম্ভব।

ACID এর মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনে আরও নির্ভরযোগ্য এবং সঠিক ডেটাবেস ট্রানজেকশন গঠন করতে পারেন।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion